package br.fafica.poo2.rightcode.usuario;
import java.util.ArrayList;

import br.fafica.poo2.rightcode.Aplicacao;
import br.fafica.poo2.rightcode.exception.UsuarioNaoEncontradoException;

public class RepositorioUsuarioArrayList implements IRepositorioUsuario {

	private ArrayList <Usuario>  usuarios;
	private static int increment;


	public RepositorioUsuarioArrayList(){
		usuarios =new ArrayList <Usuario> ();
		increment = (getCodigoIncrement()+1);
		System.err.println("CONTRUTOR DE ARRAYLIST USUARIO");// Linha temporaria
	}
	
	private int getCodigoIncrement(){
		return usuarios.size();
	}
	
	@Override
	public void TesteUsuario() {
		// Lembrete, N�o ha teste para ArrayList
		
	}

	@Override
	public void InstalarUsuario(boolean samples) {
		if(samples){
			Aplicacao app = new Aplicacao();
			for(Usuario u: app.getUsuario()){
				AdicionarUsuario(u);
			}
		}
		
	}
	@Override
	public void AdicionarUsuario(Usuario usuario) {
		if(usuario.getCodigo()==0){
			usuario.setCodigo(increment);
			increment+=1;
		}
		usuarios.add(usuario);

	}
	
	@Override
	public ArrayList<Usuario> ListaUsuario() {
		return usuarios;
	}

	@Override
	public void RemoverUsuario(Usuario usuario) {
		usuarios.remove(usuario);
		
	}

	@Override
	public void EditarUsuario(Usuario usuario) throws UsuarioNaoEncontradoException {
		Usuario novo=BuscarUsuario(usuario.getCodigo());
		if(novo!=null){
			novo.setNome(usuario.getNome());
			novo.setDisciplinas(usuario.getDisciplinas());
		}else{
			throw new UsuarioNaoEncontradoException();
		}
		
	}

	public Usuario BuscarUsuario(int codigo) {
		Usuario retorno= null;
		for(int i=0;i<usuarios.size();i++){
			if(codigo==usuarios.get(i).getCodigo()){
				retorno=usuarios.get(i);
				break;
			}
		}
		return retorno;
	}
}


/*	public void RemoverUsuario(String nome) {
	Usuario usuario = getUsuario(nome);
	UsuarioArrayList.remove(usuario);

}


public String ListarUsuario() {
	String resultado="";
	for(int i=0;i<UsuarioArrayList.size();i++){
		resultado+=UsuarioArrayList.get(i)+"\n\n";
	}
	return resultado;
}



public void EditarUsuario(String nome, Usuario novo) {
	int indice= getIndice(nome);
	this.UsuarioArrayList.set(indice,novo);
}




	private Usuario getUsuario(String nome){

	Usuario retornar=null;
	for(int i=0;i<UsuarioArrayList.size();i++){
		if(nome.equalsIgnoreCase(UsuarioArrayList.get(i).getNome())){
			retornar=UsuarioArrayList.get(i);

		}

	}
	return retornar;
}

	private int getIndice(String nome){
	int indice=-1;
	for(int i=0;i<UsuarioArrayList.size();i++){
		if(nome.equalsIgnoreCase(UsuarioArrayList.get(i).getNome())){
			indice=i;
			break;
		}

	}
	return indice;
	}*/
